return {
	-- customize nvim-cmp configs
	-- Use <tab> for completion and snippets (supertab)
	-- first: disable default <tab> and <s-tab> behavior in LuaSnip
	{ "L3MON4D3/LuaSnip" },
	-- then: setup supertab in cmp
	{
		"hrsh7th/nvim-cmp",
		version = false,
		event = "InsertEnter",
		dependencies = {
			"hrsh7th/cmp-nvim-lsp",
			"hrsh7th/cmp-emoji",
			"hrsh7th/cmp-buffer",
			"hrsh7th/cmp-path",
		},
		opts = function()
			local cmp = require("cmp")
			return {
				completion = {
					completeopt = "menu,menuone,noinsert",
				},
				mapping = cmp.mapping.preset.insert({
					["<C-b>"] = cmp.mapping.scroll_docs(-4),
					["<C-f>"] = cmp.mapping.scroll_docs(4),
					["<C-Space>"] = cmp.mapping.complete(),
					["<CR>"] = cmp.mapping.confirm({ select = true }),
				}),
				sources = cmp.config.sources({
					{ name = "nvim_lsp" },
					{ name = "path" },
				}, {
					{ name = "buffer" },
				}),
				formatting = {
					format = function(entry, vim_item)
						local icons = {
							Text = " ",
							Method = " ",
							Function = " ",
							Constructor = " ",
							Field = "ﰠ ",
							Variable = " ",
							Class = "ﴯ ",
							Interface = " ",
							Module = " ",
							Property = "ﰠ ",
							Unit = " ",
							Value = " ",
							Enum = " ",
							Keyword = " ",
							Snippet = " ",
							Color = " ",
							File = " ",
							Reference = " ",
							Folder = " ",
							EnumMember = " ",
							Constant = " ",
							Struct = " ",
							Event = " ",
							Operator = " ",
							TypeParameter = " ",
						}
						if icons[vim_item.kind] then
							vim_item.kind = icons[vim_item.kind] .. vim_item.kind
						end
						return vim_item
					end,
				},
			}
		end,
	},
}
